﻿//-----------------------------------------------------------------------------------------
// <copyright file="BlipService.TagSubscription.cs" company="Jakub Florczyk (www.jakubflorczyk.pl)">
//      Copyright © 2009 Jakub Florczyk (www.jakubflorczyk.pl)
//      http://blipnet.codeplex.com/
// </copyright>
//-----------------------------------------------------------------------------------------

namespace BlipNet
{
    using System;
    using System.Globalization;

    /// <summary>
    /// Blip serwis.
    /// </summary>
    public partial class BlipService
    {
        /// <summary>
        /// Zwraca wszystkie relacje pomiędzy aktualnie zalogowanym użytkownikiem i tagami.
        /// </summary>
        /// <returns>Subskrybcje użytkownika.</returns>
        public TagSubscription[] GetTagSubscriptions()
        {
            return RequestGetMany<TagSubscription>("/tag_subscriptions");
        }

        /// <summary>
        /// Zwraca subskrybcje tagów aktualnie zalogowanego użytkownika.
        /// </summary>
        /// <returns>Subskrybcje użytkownika.</returns>
        public TagSubscription[] GetTagSubscriptionsSubscribed()
        {
            return RequestGetMany<TagSubscription>("/tag_subscriptions/subscribed");
        }

        /// <summary>
        /// Zwraca ignorowane tagi aktualnie zalogowanego użytkownika.
        /// </summary>
        /// <returns>Subskrybcje użytkownika.</returns>
        public TagSubscription[] GetTagSubscriptionsIgnored()
        {
            return RequestGetMany<TagSubscription>("/tag_subscriptions/ignored");
        }
        
        /// <summary>
        /// Tworzy subskrypcję taga dla aktualnie zalogowanego użytkownika.
        /// </summary>
        /// <param name="tag">Subskrybowany tag.</param>
        public void SubscribeTagSubscription(string tag)
        {
            this.RequestPut(String.Format(CultureInfo.InvariantCulture, "/tag_subscriptions/subscribe/{0}", tag));
        }

        /// <summary>
        /// Ignorowanie taga dla aktualnie zalogowanego użytkownika.
        /// </summary>
        /// <param name="tag">Ignorowany tag.</param>
        public void IgnoreTagSubscription(string tag)
        {
            this.RequestPut(String.Format(CultureInfo.InvariantCulture, "/tag_subscriptions/ignore/{0}", tag));
        }

        /// <summary>
        /// Wyłączenie subskrypcji lub ignorowania taga, w zależności od stanu relacji, dla aktualnie zalogowanego użytkownika.
        /// </summary>
        /// <param name="tag">Ignorowany tag.</param>
        public void TrackTagSubscription(string tag)
        {
            this.RequestPut(String.Format(CultureInfo.InvariantCulture, "/tag_subscriptions/tracked/{0}", tag));
        }
    }
}
